package aop.javaDynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import aop.javaDynamic.dao.PassOneDao;

public class PassOneDaoDynamic implements InvocationHandler {
	private Object passOneDaoImpl;

	public Object bind(Object passOneDaoImpl) {
//	super();
		this.passOneDaoImpl = passOneDaoImpl;
		System.out.println("passOneDaoImpl.getClass().getInterfaces() = "+passOneDaoImpl.getClass().getInterfaces()[0].getName());
		return Proxy.newProxyInstance(PassOneDaoDynamic.class.getClassLoader(), new Class[] {PassOneDao.class}, this);
		//返回的是代理对象
//		return Proxy.newProxyInstance(passOneDaoImpl.getClass().getClassLoader(),
//				passOneDaoImpl.getClass().getInterfaces(), this);
		


	}
	@Override
	public Object invoke(Object arg0, Method arg1, Object[] arg2) throws Throwable {
		Object result = null;
		long startTime = System.currentTimeMillis();
//		result = ((Method) passOneDaoImpl).invoke(passOneDaoImpl, arg2);
		result = arg1.invoke(passOneDaoImpl, arg2);
		long endTime = System.currentTimeMillis();
		System.out.println("执行时间" + (endTime - startTime));
		return result;
	}

}
